define(['/util/core.js', '/util/pubSub.js'], function (Class, pubSub) {
    var Jape = new Class();

    /**
     * 添加在 { 类 } 上的静态方法
     */
    Jape.extend({
        // find: function() { return '1' },
        // exists: function() {}
    });

    /**
     * 添加在 { 原型 } 上的公共方法
     */
    Jape.include(pubSub);
    Jape.include({
        // init() { this.Person = 'Person'; },
        // save: function(){},
        // destroy: function(){}
    });

    /**
     * 添加一些较为私有的数据，该数据只能通过 setStore 添加，getStore 获取
     */
    Jape.initMixin(function (klass) {
        klass.createDefine(Jape, '__data', {});

        klass.fn.setStore = function (obj) {
            for (var key in obj) {
                Jape.__data[key] = obj[key];
            }
            return this
        };
        klass.fn.getStore = function (key) {
            return key ? Jape.__data[key] : Jape.__data
        };
    });

    return { Jape, Class }
});
